using System;
using System.Collections.Generic;
using System.Text;
using Unitins.Component.PersistenceLayer;
using Unitins.Component.ComponentMaster;

namespace Unitins.Component.Repository.Sepsi
{
    [Serializable]
    public class Pessoa : IObject<Pessoa>
    {
        #region Fields

        private Int64 idPessoa;
        private String nome;
        private String nomePai;
        private String nomeMae;
        private String naturalidade;
        private String nacionalidade;
        private DateTime dataNascimento;
        private String rg;
        private String rgOrgaoUf;
        private DateTime rgData;
        private String cpf;
        private String telResidencial;
        private String telCelular;
        private String telComercial;
        private String endereco;
        private String bairro;
        private String cidade;
        private String estado;
        private String cep;
        private String email;
        private Boolean ativo;

        #endregion Fields

        #region Properties

        public Int64 IdPessoa
        {
            get { return idPessoa; }
            set { idPessoa = value; }
        }

        public String Nome
        {
            get { return nome; }
            set { nome = value; }
        }

        public String NomePai
        {
            get { return nomePai; }
            set { nomePai = value; }
        }

        public String NomeMae
        {
            get { return nomeMae; }
            set { nomeMae = value; }
        }

        public String Naturalidade
        {
            get { return naturalidade; }
            set { naturalidade = value; }
        }

        public String Nacionalidade
        {
            get { return nacionalidade; }
            set { nacionalidade = value; }
        }

        public DateTime DataNascimento
        {
            get { return dataNascimento; }
            set { dataNascimento = value; }
        }

        public String Rg
        {
            get { return rg; }
            set { rg = value; }
        }

        public String RgOrgaoUf
        {
            get { return rgOrgaoUf; }
            set { rgOrgaoUf = value; }
        }

        public DateTime RgData
        {
            get { return rgData; }
            set { rgData = value; }
        }

        public String Cpf
        {
            get { return cpf; }
            set { cpf = value; }
        }

        public String TelResidencial
        {
            get { return telResidencial; }
            set { telResidencial = value; }
        }

        public String TelCelular
        {
            get { return telCelular; }
            set { telCelular = value; }
        }

        public String TelComercial
        {
            get { return telComercial; }
            set { telComercial = value; }
        }

        public String Endereco
        {
            get { return endereco; }
            set { endereco = value; }
        }

        public String Bairro
        {
            get { return bairro; }
            set { bairro = value; }
        }

        public String Cidade
        {
            get { return cidade; }
            set { cidade = value; }
        }

        public String Estado
        {
            get { return estado; }
            set { estado = value; }
        }

        public String Cep
        {
            get { return cep; }
            set { cep = value; }
        }

        public String Email
        {
            get { return email; }
            set { email = value; }
        }

        public Boolean Ativo
        {
            get { return ativo; }
            set { ativo = value; }
        }

        #endregion Properties

        #region Constructor

        public Pessoa()
        {
        }

        public Pessoa(Int64 idPessoa, String nome, String nomePai, String nomeMae, String naturalidade, String nacionalidade, DateTime dataNascimento, String rg, String rgOrgaoUf, DateTime rgData, String cpf, String telResidencial, String telCelular, String telComercial, String endereco, String bairro, String cidade, String estado, String cep, String email, Boolean ativo)
        {
            this.IdPessoa = idPessoa;
            this.Nome = nome;
            this.NomePai = nomePai;
            this.NomeMae = nomeMae;
            this.Naturalidade = naturalidade;
            this.Nacionalidade = nacionalidade;
            this.DataNascimento = dataNascimento;
            this.Rg = rg;
            this.RgOrgaoUf = rgOrgaoUf;
            this.RgData = rgData;
            this.Cpf = cpf;
            this.TelResidencial = telResidencial;
            this.TelCelular = telCelular;
            this.TelComercial = telComercial;
            this.Endereco = endereco;
            this.Bairro = bairro;
            this.Cidade = cidade;
            this.Estado = estado;
            this.Cep = cep;
            this.Email = email;
            this.Ativo = ativo;
        }

        #endregion Constructors

        #region Methods Overrides

        public String GetToString()
        {
            return
            (
                "{IdPessoa : " + this.IdPessoa + "} " + Environment.NewLine +
                "{Nome : " + this.Nome + "} " + Environment.NewLine +
                "{NomePai : " + this.NomePai + "} " + Environment.NewLine +
                "{NomeMae : " + this.NomeMae + "} " + Environment.NewLine +
                "{Naturalidade : " + this.Naturalidade + "} " + Environment.NewLine +
                "{Nacionalidade : " + this.Nacionalidade + "} " + Environment.NewLine +
                "{DataNascimento : " + this.DataNascimento + "} " + Environment.NewLine +
                "{Rg : " + this.Rg + "} " + Environment.NewLine +
                "{RgOrgaoUf : " + this.RgOrgaoUf + "} " + Environment.NewLine +
                "{RgData : " + this.RgData + "} " + Environment.NewLine +
                "{Cpf : " + this.Cpf + "} " + Environment.NewLine +
                "{TelResidencial : " + this.TelResidencial + "} " + Environment.NewLine +
                "{TelCelular : " + this.TelCelular + "} " + Environment.NewLine +
                "{TelComercial : " + this.TelComercial + "} " + Environment.NewLine +
                "{Endereco : " + this.Endereco + "} " + Environment.NewLine +
                "{Bairro : " + this.Bairro + "} " + Environment.NewLine +
                "{Cidade : " + this.Cidade + "} " + Environment.NewLine +
                "{Estado : " + this.Estado + "} " + Environment.NewLine +
                "{Cep : " + this.Cep + "} " + Environment.NewLine +
                "{Email : " + this.Email + "} " + Environment.NewLine +
                "{Ativo : " + this.Ativo + "} " + Environment.NewLine +
                ""
             );
        }

        public object Clone()
        {
            Pessoa objPessoa = new Pessoa();

            objPessoa.IdPessoa = this.IdPessoa;
            objPessoa.Nome = this.Nome;
            objPessoa.NomePai = this.NomePai;
            objPessoa.NomeMae = this.NomeMae;
            objPessoa.Naturalidade = this.Naturalidade;
            objPessoa.Nacionalidade = this.Nacionalidade;
            objPessoa.DataNascimento = this.DataNascimento;
            objPessoa.Rg = this.Rg;
            objPessoa.RgOrgaoUf = this.RgOrgaoUf;
            objPessoa.RgData = this.RgData;
            objPessoa.Cpf = this.Cpf;
            objPessoa.TelResidencial = this.TelResidencial;
            objPessoa.TelCelular = this.TelCelular;
            objPessoa.TelComercial = this.TelComercial;
            objPessoa.Endereco = this.Endereco;
            objPessoa.Bairro = this.Bairro;
            objPessoa.Cidade = this.Cidade;
            objPessoa.Estado = this.Estado;
            objPessoa.Cep = this.Cep;
            objPessoa.Email = this.Email;
            objPessoa.Ativo = this.Ativo;

            return objPessoa;
        }

        #endregion Methods Overrides

    }

    public enum PessoaAttribute
    {
        IdPessoa = 0,
        Nome = 1,
        NomePai = 2,
        NomeMae = 3,
        Naturalidade = 4,
        Nacionalidade = 5,
        DataNascimento = 6,
        Rg = 7,
        RgOrgaoUf = 8,
        RgData = 9,
        Cpf = 10,
        TelResidencial = 11,
        TelCelular = 12,
        TelComercial = 13,
        Endereco = 14,
        Bairro = 15,
        Cidade = 16,
        Estado = 17,
        Cep = 18,
        Email = 19,
        Ativo = 20,
    }
}
